#ifndef MYSQL_H
#define MYSQL_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
#include <QMutex>
#include <QVariantMap>
#include <QTime>

#include <QDebug>



class Mysql
{
public:
    Mysql(QString hostname,int port,QString dbname,QString username,QString pwd,QString connectionName);
    bool connect(void);
    void close(void);
    bool insertInto(QString table,QVariantMap dat);
    bool deleteBy(QString table,int id);
    bool deleteBy(QString table,QString condition);//删除重载函数

    bool updateBy(QString table,int id,QVariantMap dat);
    bool updateBy(QString table,QString condition,QVariantMap dat);//更新函数重载

    bool createTable(QString table,QString content=
            "id int UNSIGNED PRIMARY KEY AUTO_INCREMENT,\
             stu_num int NOT NULL,\
             weight float NOT NULL,\
             time varchar(50) not null",
                     QString engine="InnoDB",
                     QString charset="utf8");
    bool dropTable(QString table);

    QSqlQuery selectBy(QString table,QString content,QString condition="");

    ~Mysql(void);
    QString lastError() const;
    void setLastError(const QString &lastError);

    QString lastSqlString() const;
    void setLastSqlString(const QString &lastSqlString);

private:
    QString _hostname;//ip地址，主机名字
    int     _port; //端口号
    QString _dbname;//数据库名
    QString _username;//用户名
    QString _pwd;//用户密码
    QString _lastError;//最后依次的错误
    QString _lastSqlString;//最后依次的sql语句

    QSqlDatabase db; //数据库句柄
    QString _connectionName;//连接名称  通过不同的连接名字可以在不同的线程中调用
//    QMutex mutex;                 //多线程资源访问控制//
};

#endif // MYSQL_H
